<template>
    <div class="login-wrap">
        <div class="ms-login">
            <div class="ms-title">医联体管理系统</div>
            <el-form :model="param" :rules="rules" ref="login" label-width="0px" class="ms-content">
                <el-form-item prop="username">
                    <el-input v-model="param.username" placeholder="请输入用户名">
                        <template #prepend>
                            <el-button icon="el-icon-user"></el-button>
                        </template>
                    </el-input>
                </el-form-item>
                <el-form-item prop="password">
                    <el-input type="password" placeholder="请输入密码" v-model="param.password" @keyup.enter="submitForm()">
                        <template #prepend>
                            <el-button icon="el-icon-lock"></el-button>
                        </template>
                    </el-input>
                </el-form-item>
                <div class="login-btn">
                    <el-button type="primary" @click="submitForm()">登录</el-button>
                </div>
            </el-form>
        </div>
    </div>
</template>

<script>
    import { ref, reactive, onBeforeMount } from "vue";
    import { useStore } from "vuex";
    import { useRouter } from "vue-router";
    import { ElMessage } from "element-plus";
    import { login as LoginApi } from "../api/index"
    import { getToken, getUserType, log } from "../utils/user"

    import { ADMIN_USER, MEDICAL_USER, ORG_USER, LOCAL_USER, ZY_USER, MALL_USER } from "../utils/const"

    export default {
        setup() {
            const router = useRouter();

            onBeforeMount(() => {
                // checkLogin
                const token = getToken();
                if (token) {
                    router.push('/account');
                    return
                }
            })

            const param = reactive({
                username: "",
                password: "",
            });

            const rules = {
                username: [
                    {
                        required: true,
                        message: "请输入用户名",
                        trigger: "blur",
                    },
                ],
                password: [
                    { required: true, message: "请输入密码", trigger: "blur" },
                ],
            };
            const login = ref(null);
            const submitForm = () => {
                login.value.validate((valid, errors) => {
                    if (valid) {
                        LoginApi({ name: param.username, password: param.password }).then(res => {
                            log("登录res", res);
                            if (res.status == 'ok') {
                                ElMessage.success(res.msg);
                                localStorage.setItem(LOCAL_USER, JSON.stringify(res.data));
                                router.push('/account');
                            } else {
                                ElMessage.error(res.msg);
                            }
                        })

                    }
                });
            };

            const store = useStore();
            store.commit("clearTags");

            return {
                param,
                rules,
                login,
                submitForm,
            };
        },
    };
</script>

<style scoped>
    .login-wrap {
        position: relative;
        width: 100%;
        height: 100%;
        background-image: url(../assets/img/login-bg.jpg);
        background-size: 100%;
    }

    .ms-title {
        width: 100%;
        line-height: 50px;
        text-align: center;
        font-size: 20px;
        color: #fff;
        border-bottom: 1px solid #ddd;
    }

    .ms-login {
        position: absolute;
        left: 50%;
        top: 50%;
        width: 350px;
        margin: -190px 0 0 -175px;
        border-radius: 5px;
        background: rgba(255, 255, 255, 0.3);
        overflow: hidden;
    }

    .ms-content {
        padding: 30px 30px;
    }

    .login-btn {
        text-align: center;
    }

    .login-btn button {
        width: 100%;
        height: 36px;
        margin-bottom: 10px;
    }

    .login-tips {
        font-size: 12px;
        line-height: 30px;
        color: #fff;
    }
</style>